Traditionally, two main technologies have dominated the non-volatile flash memory market: NOR and NAND. NOR flash was first introduced around 1988, revolutionizing a market that was then dominated by EPROM and EEPROM devices. NAND flash architecture was introduced around 1989.
NOR flash typically enables higher read performance than NAND flash. Therefore, NOR flash typically has been employed for such applications as code storage and execution in such devices as simple consumer appliances, low end cell phones, embedded applications, and the like. However, NAND flash offers extremely high cell densities, higher capacities, and faster write/erase performance than NOR flash. Moreover, NAND flash typically is less expensive than NOR flash. Therefore, NAND flash has typically been employed in data storage applications, including MP3 players, digital cameras, and memory devices.
However, because of its higher capacity, lower cost, faster overall performance, and longer life span, an increasing number of mobile device manufacturers are exploring the use of NAND flash for code storage. One such use has included storage of a bootstrap program, sometimes referred to as a loader.
Unfortunately, because NAND flash is a block oriented memory device, it typically requires a command to be sent that readies a memory page to be read. When a Central Processing Unit (CPU) attempts to boot from flash memory, the CPU typically begins reading instructions immediately. However, if a CPU is not properly configured, it will be unable to boot from block oriented NAND flash. Newer NAND flash devices are capable of loading a first page automatically on a power-up, so that it may be possible to read the loader program. However, because NAND flash remains constrained to block orientation, it has been difficult to enable loader programs to properly execute. Therefore, it is with respect to these considerations and others that the present invention has been made.